package com.chaike.hsq.bean.response;

import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;

/**
 * 惠收钱 基础 响应参数.
 *
 * @author Luo
 * @version 1.0
 * @date 2021-10-14 10:36
 */
@Data
@Slf4j
@Accessors(chain = true)
public class BaseHsqResponse implements Serializable {

    private static final long serialVersionUID = -6811550517417623460L;

    /**
     * 响应状态.
     * <pre>
     *     服务端响应状态，如果为true，则可以调用result；如果为false，则调用errorCode来获取出错信息
     * </pre>
     */
    private Boolean success;

    /**
     * 错误码.
     */
    private String errorCode;

    /**
     * 错误描述.
     */
    private String errorMsg;

    /**
     * 应答报文体.
     * <pre>
     *     通过对应的加密类型进行解密；详见业务报文应答报文体说明
     * </pre>
     */
    private String result;

    /**
     * 签名.
     */
    private String sign;

    /**
     * 解密 {@link #result} 后的数据.
     */
    private String decryptData;

    /**
     * 转换为对象.
     *
     * @param tClass 对象类型
     * @param <T>    对象类型
     * @return 对象
     */
    public <T> T toResult(final Class<T> tClass) {
        return JSONUtil.toBean(this.getDecryptData(), tClass);
    }

}
